package com.hhxy.reflect.framwork;

import java.io.FileOutputStream;
import java.io.PrintStream;
import java.lang.reflect.Field;

public class MybatisUtil {
    /**
     * 保存任意类型的对象
     *
     * @param obj 需要保存的对象
     */
    public static void save(Object obj) {
        try /*(
                PrintStream ps = new PrintStream(new FileOutputStream("day1/src/data.txt",true));//管道，用来传输数据
        ) */{
            //1.获取类对象
            Class c = obj.getClass();
            System.out.println("=================" + c.getSimpleName() + "=================");
            //2.获取需要保存对象obj的所有成员变量（只有反射可以做到）
            Field[] fields = c.getDeclaredFields();
            //3.获取成员变量的信息
            for (Field field : fields) {
                String name = field.getName();//获取成员变量的名称
                field.setAccessible(true);//暴力反射，无论用什么修饰都能获取到成员变量的值
                String value = field.get(obj) + "";//获取成员变量的值，文件中的数据都是以字符串的形式存储的
//                ps.println(name + "=" + value);
                System.out.println(name+":"+value);
            }
            /*            ps.close();//资源回收，这一步可以直接换成：将管道用小括号抱起来，让他自动释放资源*/
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
